}
},
+ getWorkAreaForMonitor: function(monitorIndex) {
+ // Assume that all workspaces will have the same
+ // struts and pick the first one.
+ let ws = global.screen.get_workspace_by_index(0);
+ return ws.get_work_area_for_monitor(monitorIndex);
+ },
+
// This call guarantees that we return some monitor to simplify usage of it
// In practice all tracked actors should be visible on some monitor anyway
findIndexForActor: function(actor) {
this.hide();
let primary = Main.layoutManager.primaryMonitor;
-
- let contentY = Main.panel.actor.height;
- let contentHeight = primary.height - contentY - Main.messageTray.actor.height;
+ let workArea = Main.layoutManager.getWorkAreaForMonitor(Main.layoutManager.primaryIndex);
this._overview.set_position(primary.x, primary.y);
this._overview.set_size(primary.width, primary.height);
- this._coverPane.set_position(0, contentY);
- this._coverPane.set_size(primary.width, contentHeight);
+ this._coverPane.set_position(0, workArea.y);
+ this._coverPane.set_size(workArea.width, workArea.height);
},
_onRestacked: function() {
// Setting the max-height won't do any good if the minimum height of the
// menu is higher then the screen; it's useful if part of the menu is
// scrollable so the minimum height is smaller than the natural height
- let monitor = Main.layoutManager.primaryMonitor;
- this.menu.actor.style = ('max-height: ' +
- Math.round(monitor.height - Main.panel.actor.height) +
- 'px;');
+ let workArea = Main.layoutManager.getWorkAreaForMonitor(Main.layoutManager.primaryIndex);
+ this.menu.actor.style = ('max-height: ' + Math.round(workArea.height) + 'px;');
},
destroy: function() {
_getPreferredHeight : function (actor, forWidth, alloc) {
let children = this._list.get_children();
- let primary = Main.layoutManager.primaryMonitor;
+ let workArea = Main.layoutManager.getWorkAreaForMonitor(Main.layoutManager.primaryIndex);
- let availHeight = primary.height;
- availHeight -= Main.panel.actor.height;
+ let availHeight = workArea.height;
availHeight -= this.actor.get_theme_node().get_vertical_padding();
availHeight -= this._container.get_theme_node().get_vertical_padding();
availHeight -= this._list.get_theme_node().get_vertical_padding();
for (let i = 0; i < children.length; i++) {
let [childMinHeight, childNaturalHeight] = children[i].get_preferred_height(-1);
let [childMinWidth, childNaturalWidth] = children[i].get_preferred_width(childNaturalHeight);
- height += childNaturalHeight * primary.width / primary.height;
+ height += childNaturalHeight * workArea.width / workArea.height;
}
let spacing = this._itemSpacing * (global.screen.n_workspaces - 1);
},
_getPreferredWidth : function (actor, forHeight, alloc) {
- let primary = Main.layoutManager.primaryMonitor;
- this._childWidth = Math.round(this._childHeight * primary.width / primary.height);
+ let workArea = Main.layoutManager.getWorkAreaForMonitor(Main.layoutManager.primaryIndex);
+ this._childWidth = Math.round(this._childHeight * workArea.width / workArea.height);
alloc.min_size = this._childWidth;
alloc.natural_size = this._childWidth;
}
- let primary = Main.layoutManager.primaryMonitor;
+ let workArea = Main.layoutManager.getWorkAreaForMonitor(Main.layoutManager.primaryIndex);
let [containerMinHeight, containerNatHeight] = this._container.get_preferred_height(global.screen_width);
let [containerMinWidth, containerNatWidth] = this._container.get_preferred_width(containerNatHeight);
- this._container.x = primary.x + Math.floor((primary.width - containerNatWidth) / 2);
- this._container.y = primary.y + Main.panel.actor.height +
- Math.floor(((primary.height - Main.panel.actor.height) - containerNatHeight) / 2);
+ this._container.x = workArea.x + Math.floor((workArea.width - containerNatWidth) / 2);
+ this._container.y = workArea.y + Math.floor((workArea.height - containerNatHeight) / 2);
},
_show : function() {
this._stateCounts[ThumbnailState[key]] = 0;
// The "porthole" is the portion of the screen that we show in the workspaces
- let panelHeight = Main.panel.actor.height;
- let monitor = Main.layoutManager.primaryMonitor;
- this._porthole = {
- x: monitor.x,
- y: monitor.y + panelHeight,
- width: monitor.width,
- height: monitor.height - panelHeight
- };
+ this._porthole = Main.layoutManager.getWorkAreaForMonitor(Main.layoutManager.primaryIndex);
this.addThumbnails(0, global.screen.n_workspaces);